package armazenamento;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import model.Usuario;

// Classe responsável por armazenar os cadastros de usuários (não persiste os dados em banco de dados)
public class Cadastros {

	// Cria uma instância única de cadastros para toda aplicação
	private static Cadastros cadastros;
	
	//Armazena todos os usuários do sistema
	private Map<String, Usuario> usuarios = new HashMap<String, Usuario>();
	
	// método construtor da classe
	private Cadastros() {
		super();
	}
	
	// Recupera a instância de cadastros da aplicação
	public static Cadastros getInstance() {
		if (cadastros == null) {
			cadastros = new Cadastros();
		}
		
		return cadastros;
	}
	
	// Adiciona um novo usuário na aplicação 
	public boolean addUsuario(Usuario novo) {
		if ( !usuarios.containsKey(novo.getLogin()) ) {
			usuarios.put(novo.getLogin(), novo);
			return true;
		}
		
		return false;
	}
	
	// Recupera um usuário cadastrado no sistema através do login
	public Usuario getUsuario(String login) {
		return usuarios.get(login);
	}
	
	public List<Usuario> getUsuarios() {
		List<Usuario> lista = new ArrayList<Usuario>();
		Iterator<Usuario> i = usuarios.values().iterator();
		while ( i.hasNext() ) {
			lista.add( (Usuario) i.next() );
		}
		return lista;
	}
	
}
